//
// Copyright (C) [2024] Xingyun Integrated Circuit, Inc.
//
// GreenCode was a private technology asset of Xingyun Integrated Circuit， Inc （Confidential）
//  Author: Shawn.Tan
//  Date : 2025.10.28
//
//  History : Initial Version 2025.10.28
//
//
#ifndef Green_ConditionFlags_H
#define Green_ConditionFlags_H

#include "Defines.h"

namespace Green {

  /*!
    \struct ConditionFlags
    \brief Structure to contain condition flag values.
  */
  struct ConditionFlags {
  public:
    //!< Default constructor
    ConditionFlags()
      : mNegativeFlag(0), mZeroFlag(0), mCarryFlag(0), mOverflowFlag(0)
    {
    }

    //!< Constructor
    ConditionFlags(cuint8 negativeFlag, cuint8 zeroFlag, cuint8 carryFlag, cuint8 overflowFlag)
      : mNegativeFlag(negativeFlag), mZeroFlag(zeroFlag), mCarryFlag(carryFlag), mOverflowFlag(overflowFlag)
    {
    }

    COPY_CONSTRUCTOR_DEFAULT(ConditionFlags); //!< Copy constructor
    DESTRUCTOR_DEFAULT(ConditionFlags); //!< Destructor
    ASSIGNMENT_OPERATOR_DEFAULT(ConditionFlags); //!< Assignment operator
  public:
    uint8 mNegativeFlag; //!< Negative flag.
    uint8 mZeroFlag; //!< Zero flag.
    uint8 mCarryFlag; //!< Carry flag.
    uint8 mOverflowFlag; //!< Overflow flag.
  };

}

#endif  // Green_ConditionFlags_H
